3.9 遍历DataFrame行列(applymap)
Applymap()函数的用法比较简单,是对DataFrame中的每个元素执行指定函数的处理,虽然用途不如apply广泛,但是在某些场合还是比较有用,比如将数字保留到小数点后两位。
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.保留小数.xlsx" )
df.iloc[:, 1 :]=df.iloc[:, 1 :].applymap( "{:.2f}" .format)
# df.iloc[:,1:]= df.iloc[:,1:].apply(lambda s:s.apply("{:.2f}".format))
#等同上一行,是先处理Series,然后再处理Series里面的每一个元素
print (df)
姓名 | 数学 | 语文 | 英语 | |
---|---|---|---|---|
0 | 张三 | 77.33 | 85.85 | 70.13 |
1 | 李四 | 70.13 | 66.93 | 66.67 |
2 | 王五 | 80.87 | 61.17 | 60.17 |
3 | 赵六 | 81.97 | 53.53 | 81.33 |
以上打印出来的数据表面看起来是保留两位小数的数据,其实是保留两位小数的字符(object),
如果要变成保留两位小数的数据,则需要在后面加上astype(“float”)
df.iloc[:, 1 :]=df.iloc[:, 1 :].applymap( "{:.2f}" .format).astype( “float” )
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.保留小数.xlsx" )
df.iloc[:, 1 :]=df.iloc[:, 1 :].applymap( lambda n: "优" + str (n) if n> 80 else "差" )
#不在前面加”优”,则返回原值 的写法为n:n, 如果要全部类型改为整数,则改为n:int(n)
print (df)
返回:
姓名 | 数学 | 语文 | 英语 | |
---|---|---|---|---|
0 | 张三 | 差 | 优85.8536585365 | 差 |
1 | 李四 | 差 | 差 | 差 |
2 | 王五 | 优80.86666666 | 差 | 差 |
3 | 赵六 | 优81.96666666 | 差 | 优81.33333333 |